/* 角色管理JS */

/**
 * 创建分页
 */
function generatePage(){
	
	// 判断是否有获取分页数据的权限
	if( window.hasAuthSearch == "true"){
		// 1.获取分页数据
		var pageInfo = getPageInfoRemote();

		// 2.填充表格
		fillTableBody(pageInfo);
		
		// 3.创建分页条
		generateNavigation(pageInfo);
		
		// 4.创建分页信息
		generatePageInfo(pageInfo);
	}
	
}

/**
 * 同步获取分页数据
 */
function getPageInfoRemote(){
	// 调用$.ajax()函数发送请求并接收它的返回值
	var ajaxResult = $.ajax({
		url: window.searchUrl,
		type: "GET",
		data: {
			pageNum: window.pageNum,
			pageSize: window.pageSize,
			keyword: window.keyword
		},
		async: false,
		dataType: "json"
	});
	
	// 判断当前响应状态码是否为200
	var statusCode = ajaxResult.status;
	
	// 请求失败
	if(statusCode != 200){
		layer.msg("服务器端程序调用失败！响应状态码="+statusCode+" 说明信息="+ajaxResult.statusText);
		return null;
	}
	
	// 如果请求成功，获取resultEntity
	var resultEntity = ajaxResult.responseJSON;
	
	// 从resultEntity中获取result属性
	var result = resultEntity.result;
	
	// 判断result是否成功
	if(result == "FAILED"){
		layer.msg(resultEntity.message);
		return null;
	}
	
	// 确认result为成功后获取pageInfo
	var pageInfo = resultEntity.data;
	
	// 返回pageInfo
	return pageInfo;
}

/**
 * 填充表格
 */
function fillTableBody(pageInfo){
	
	// 清除tbody中的旧的内容
	$("table tbody").empty();
	
	// 取消全选的选中状态
	$("#check_all").prop("checked", false);
	
	// 判断pageInfo对象是否有效
	if(pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length == 0){
		$("table tbody").append("<tr><td colspan='4' align='center'>抱歉！没有查询到您要的数据！</td></tr>");
		return ;
	}
	
	// 使用pageInfo的list属性填充tbody
	for (var i = 0; i < pageInfo.list.length; i++) {
		
		var role = pageInfo.list[i];
		
		var roleId = role.id;
		
		var roleName = role.name;
		
		var numberTd = "<td>"+(i+1)+"</td>";
		
		var checkboxTd = "<td><input class='check_item' type='checkbox'></td>";
		
		var nameTd = "<td>"+roleName+"</td>";
		
		var checkBtn = window.hasAuthToAssignAuth == "true" ? "<button data-id='"+roleId+"' type='button' class='"+window.toAssignAuthButton.button_class+" btn-xs checkBtn'><i class='"+window.toAssignAuthButton.icon_class+"'></i></button>" : "";
		var pencilBtn = window.hasAuthToEdit == "true" ? "<button data-id='"+roleId+"' type='button' class='"+window.toEditButton.button_class+" btn-xs pencilBtn'><i class='"+window.toEditButton.icon_class+"'></i></button>" : "";
		var removeBtn = window.hasAuthDelete == "true" ? "<button data-id='"+roleId+"' type='button' class='"+window.deleteButton.button_class+" btn-xs removeBtn'><i class='"+window.deleteButton.icon_class+"'></i></button>" : "";
		
		var btnTd = "<td>"+checkBtn+" "+pencilBtn+" "+removeBtn+"</td>";
		
		var tr = "<tr>" + numberTd + checkboxTd + nameTd + btnTd + "</tr>";
		
		$("table tbody").append(tr);
	}
	
}

/**
 * 创建分页条
 */
function generateNavigation(pageInfo){
	
	// 清除Pagination中的旧的内容
	$("#Pagination").empty();
	
	// 判断pageInfo对象是否有效
	if(pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length == 0){
		$("table tfoot").hide();
		return ;
	}
	$("table tfoot").show();
	// 获取总记录数
	var totalRecord = pageInfo.total;
	
	// 创建分页条
	$("#Pagination").pagination(totalRecord, {
		num_edge_entries: 1, 											// 边缘页数
		num_display_entries: 4, 										// 主体页数
		items_per_page:pageInfo.pageSize, 	// 每页显示的条目数
		current_page:pageInfo.pageNum -1 , 	// 当前选中的页面
		prev_text:"上一页",												// “前一页”分页按钮上显示的文字
		next_text:"下一页",												// “下一页”分页按钮上显示的文字
		callback: paginationCallBack
	});
}

/**
 * 翻页时的回调函数
 */
function paginationCallBack(pageIndex, jQuery){
	// 修改分页的全局变量
	window.pageNum = pageIndex + 1;
	// 跳转页面
	generatePage();
	return false;
}

/**
 * 创建分页信息
 */
function generatePageInfo(pageInfo){
	// 判断pageInfo对象是否有效
	if(pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length == 0){
		return ;
	}
	$("#PageInfo").empty();
	$("#PageInfo").html('当前 <b>'+pageInfo.pageNum+'</b> 页'+
			'，总 <b>'+pageInfo.pages+'</b> 页'+
			'，总 <b>'+pageInfo.total+'</b> 条记录');
}

/**
 * 生成分配权限树形结构
 */
function generateAssignAuthTree(){
	
	// 1.发送Ajax请求获取树形结构数据
	$.ajax({
		url: toAssignAuthButton.url,
		type: "GET",
		data: {
			roleId: window.roleId
		},
		dataType: "json",
		success: function(response){
			
			// 从response中获取result属性
			var result = response.result;
			
			// 判断成功
			if(result == "SUCCESS"){
				
				// 2.创建JSON对象用于存储对zTree所做的设置
				var setting = {
					view: {
						addDiyDom: myAuthAddDiyDom
					},
					check: {
						enable: true,
						chkboxType: {
							"Y" : "", // 被勾选时：取消父子联动
							"N" : ""  // 取消勾选时：取消父子联动
						}
					},
					data: {
						simpleData: {
							enable: true,
							pIdKey: "pid"
						}
					}
				};
				
				// 3.初始化树形结构
				$.fn.zTree.init($("#treeDemo"), setting, response.data);
			}
			
			// 如果失败
			if(result == "FAILED"){
				// 提示信息
				layer.msg("操作失败！" + response.message);
			}
		},
		error: function(response){
			layer.msg("服务器端程序调用失败！响应状态码="+response.status+" 说明信息="+response.statusText);
		}
		
	});
}

/**
 * 修改默认的图标
 */
function myAuthAddDiyDom(treeId, treeNode){
	var aObj = $("#" + treeNode.tId + "_a");
	aObj.attr("data-code", treeNode.code);
	aObj.attr("data-type", treeNode.type);
	aObj.attr("data-orderNum", treeNode.orderNum);
	if(treeNode.type == null){
		return;
	}
	var typeSpanClass = "label-default";
	switch(treeNode.type){
		case "菜单" :
			typeSpanClass = "label-primary"
			break;
		case "按钮" :
			typeSpanClass = "label-success"
			break;
		case "数据" :
			typeSpanClass = "label-info"
			break;
		case "页面" :
			typeSpanClass = "label-warning"
			break;
		case "文件" :
			typeSpanClass = "label-danger"
			break;
		default:
			break;
	}
	var typeSpan = '<span id="typeSpan'+treeNode.tId+'" class="label ' + typeSpanClass + '" style="padding:0 2px;display:inline-block;opacity:0.8;margin-left:10px;">' + treeNode.type + '</span>';
	aObj.append(typeSpan);
}
